from __future__ import annotations
from typing import Callable, Self
from enum import IntEnum
import matplotlib
import matplotlib.artist
import matplotlib.axes
import matplotlib.figure
import matplotlib.lines
import matplotlib.patches
import matplotlib.pyplot as plt
import seaborn
import pandas as pd
import numpy as np
import tomllib
from scipy import stats
from pathlib import Path
import itertools

#region matplot_config
matplotlib.rcParams['font.family'] = 'Arial'
matplotlib.rcParams['font.size'] = 7
matplotlib.rcParams['figure.dpi'] = 300
matplotlib.rcParams['savefig.dpi'] = 300
#matplotlib.rcParams['figure.facecolor'] = (1.0, 1.0, 1.0, 0.0)
#matplotlib.rcParams['savefig.facecolor'] = (1.0, 1.0, 1.0, 0.0)

matplotlib.rcParams['axes.spines.top'] = False
matplotlib.rcParams['axes.spines.right'] = False
matplotlib.rcParams['axes.linewidth'] = 0.4
matplotlib.rcParams['axes.labelpad'] = 2.0

matplotlib.rcParams['xtick.major.width'] = 0.4
matplotlib.rcParams['xtick.minor.width'] = 0.3
matplotlib.rcParams['xtick.major.pad'] = 1.8
matplotlib.rcParams['xtick.minor.pad'] = 1.6
matplotlib.rcParams['xtick.major.size'] = 2.4
matplotlib.rcParams['xtick.minor.size'] = 1.4

matplotlib.rcParams['ytick.major.width'] = 0.4
matplotlib.rcParams['ytick.minor.width'] = 0.3
matplotlib.rcParams['ytick.major.pad'] = 1.0
matplotlib.rcParams['ytick.minor.pad'] = 0.9
matplotlib.rcParams['ytick.major.size'] = 2.4
matplotlib.rcParams['ytick.minor.size'] = 1.4

matplotlib.rcParams["legend.frameon"] = False
matplotlib.rcParams["legend.labelspacing"] = 0.05
matplotlib.rcParams["legend.handlelength"] = 0.5
matplotlib.rcParams["legend.handleheight"] = 0.5
matplotlib.rcParams["legend.handletextpad"] = 0.3
matplotlib.rcParams["legend.markerscale"] = 0.5
#endregion